import { nextTick } from 'vue'
import { useGlobalStore } from "@/store/global";
import { sleep } from './tools';

/**
 * App加载完成预处理
 */
export function preLaunchApp() {
  console.log('=== preLaunchApp ===');
}

/**
 * 首页加载完成预处理
 */
export async function preLoadIndex() {
  console.log('=== preLoadIndex ===');
  const globalStore = useGlobalStore()

  // 重置tabbar索引，只需在index页面onLoad中重置
  globalStore.curTabbarIndex = 0

  await nextTick()
  await sleep(200)
  uni.hideTabBar()
}

/**
 * 页面加载预处理
 */
export async function preLoadPage() {
  const globalStore = useGlobalStore()
  await nextTick()
  await sleep(160)
  changeSafeareaColor(globalStore.theme)
  changeThemeMode(globalStore.theme)
}

/**
 * 页面显示预处理
 * @param {Boolean} first 是否是第一次显示，默认true
 */
export async function preShowPage(first = true) {
  const globalStore = useGlobalStore()
  await nextTick()
  if (first) await sleep(160)
  changeStatusbarColor(globalStore.theme)
}

/**
 * 设置安全区域颜色
 * @description 微信小程序无法修改
 * @param {String} color 颜色值
 */
export function changeSafeareaColor(theme) {
  const themeBaseColor = {
    light: '#f8f8f8',
    dark: '#141414'
  }
  const color = themeBaseColor[theme]
  // #ifdef APP
  const platform = uni.getSystemInfoSync().platform
  if (platform == 'android') {
    const Color = plus.android.importClass('android.graphics.Color')
    plus.android.importClass('android.view.Window')
    const mainActivity = plus.android.runtimeMainActivity()
    const windowAndroid = mainActivity.getWindow()
    windowAndroid.setNavigationBarColor(Color.parseColor(color))
  }
  /**
   * iOS 请在 manifest.json 中配置 safearea 选项
   * @tutorial https://uniapp.dcloud.net.cn/tutorial/darkmode.html#ios-%E5%AE%89%E5%85%A8%E5%8C%BA%E5%9F%9F%E9%80%82%E9%85%8D
   */
  // #endif
}

/**
 * 修改状态栏颜色
 * @description 微信小程序无法修改
 * @param {String} theme 主题
 */
export function changeStatusbarColor(theme) {
  let style = theme == 'dark' ? 'light' : 'dark' // 取theme的反色
  // #ifdef APP-PLUS
  plus.navigator.setStatusBarStyle(style)
  // #endif
}

/**
 * 修改主题模式风格
 * @description 微信小程序无法修改
 * @param {String} theme 主题
 */
export function changeThemeMode(theme) {
  const themeBaseColor = {
    light: '#f8f8f8',
    dark: '#141414'
  }
  // #ifdef APP-PLUS
  plus.nativeUI.setUIStyle(theme)
  // #endif
  // #ifdef H5
  document.documentElement.style.backgroundColor = themeBaseColor[theme]
  // #endif
  // #ifdef MP-WEIXIN
  // 小程序因为本身性能问题，导致无论如何都会闪烁，无所谓了
  // #endif
}